.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.stack 200
.data
__error_resta db "RESULTADO NEGATIVO EN RESTA", 0
__error_overflow db "OVERFLOW EN PRODUCTO", 0
__error_division db "ERROR EN DIVISION", 0
__error db "ERROR", 0
_300ul dd 300
_50ul dd 50
_1ul dd 1
_50ui dw 50
_asignacionde300ulaa db " asignacion de 300ul a a ", 0
_1ui dw 1
_10ui dw 10
_Seconvirtiobuiaulparaserasignadoaa db " Se convirtio b ui a ul para ser asignado a a ", 0
_2ul dd 2
_d dd ?
_c dw ?
_b dw ?
_a dd ?
_ERRORdnoquedoen50ul db "ERROR d no quedo en 50ul ", 0
_ERRORnosepudoasignar300ulaa db "ERROR no se pudo asignar 300ul a a", 0
_ERRORanorecibioelvalor1ul db "ERROR a no recibio el valor 1ul", 0
_Seconvirtio50uiaulparaserasignadoad db " Se convirtio 50 ui a ul para ser asignado a d ", 0
.code
start:
MOV ebx, _2ul
MOV _a, ebx
MOV bx, _1ui
MOV _b, bx
MOV bx, _10ui
MOV _c, bx
MOV ebx, 0
MOV bx, _50ui
MOV _d, ebx
MOV ebx, _50ul
CMP ebx, _d
JNE @Label21
invoke MessageBox, NULL, addr _Seconvirtio50uiaulparaserasignadoad, addr _Seconvirtio50uiaulparaserasignadoad, MB_OK
JMP @Label23
@Label21:
invoke MessageBox, NULL, addr _ERRORdnoquedoen50ul, addr _ERRORdnoquedoen50ul, MB_OK
@Label23:
MOV ebx, 0
MOV bx, _b
MOV _a, ebx
MOV ebx, _1ul
CMP ebx, _a
JNE @Label35
invoke MessageBox, NULL, addr _Seconvirtiobuiaulparaserasignadoaa, addr _Seconvirtiobuiaulparaserasignadoaa, MB_OK
JMP @Label37
@Label35:
invoke MessageBox, NULL, addr _ERRORanorecibioelvalor1ul, addr _ERRORanorecibioelvalor1ul, MB_OK
@Label37:
MOV ebx, _300ul
MOV _a, ebx
MOV ebx, _300ul
CMP ebx, _a
JNE @Label49
invoke MessageBox, NULL, addr _asignacionde300ulaa, addr _asignacionde300ulaa, MB_OK
JMP @Label51
@Label49:
invoke MessageBox, NULL, addr _ERRORnosepudoasignar300ulaa, addr _ERRORnosepudoasignar300ulaa, MB_OK
@Label51:
jmp fin
overflow:
invoke MessageBox, NULL, addr __error_overflow, addr __error, MB_OK
invoke ExitProcess, 0
res_negativo:
invoke MessageBox, NULL, addr __error_resta, addr __error, MB_OK
invoke ExitProcess, 0
division:
invoke MessageBox, NULL, addr __error_division, addr __error, MB_OK
invoke ExitProcess, 0
fin:
invoke ExitProcess, 0
end start